비트 필드

메모리의 비트를 효율적으로 사용하기 위해 특정한 비트 수를 가진 필드를 정의할 수 있는 구조체의 일종

데이터 구조를 최적화하고, 메모리 사용을 절약하는 데 유용하다

정의

구조체의 멤버 변수
특정 비트 수를 지정하여 메모리를 절약할 수 있는 기능 제공

여러 개의 변수를 하나의 바이트 또는 워드에 배치하여 메모리 낭비를 줄일 수 있다

예시

C 및 C++ 같은 언어에서 특정 필드의 크기를 비트 단위로 설정할 수 있는 구조체 정의에 사용된다

struct Example {

    unsigned int field1: 1;

    unsigned int field2: 3;

    unsigned int field3: 4;

};
package oracle.hcj.constants;
public class Car {
 public final static int POWER_WINDOWS = 1;
 public final static int POWER_LOCKS = 2;
 public final static int SNOW_TIRES = 4;
 public final static int STANDARD_TIRES = 8;
 public final static int CRUISE_CONTROL = 16;
 public final static int CD_PLAYER = 32;
 public final static int AIR_CONDITIONING = 64;
 private int options;
 public Car( ) {
 }
 public void setOptions(final int options) {
 this.options = options;
 }
 public int getOptions( ) {
 return this.options;
 }
}
장점

메모리 사용을 효율적으로 유지할 수 있음
비트 조작을 통한 빠른 연산 가능

단점

데이터 접근 속도가 느릴 수 있다

다양한 플랫폼에서 일관된 동작을 보장하기 어려울 수 있다
-> 구조체의 메모리 정렬 방식에 따라 다르게 동작할 수 있기 때문